package br.com.it4.framework.util.exception;

import java.util.ArrayList;
import java.util.List;

/**
 * Classe usada para encapsular as exceções de negócio.
 * 
 * @author Mozart Silva (mozart.vsilva@gmail.com)
 * 
 */
public class BusinessException extends Exception {

	/** A lista de mensagens da exceção. */
	private List<String> messages;

	/**
	 * Construtor da exceção de negócios.
	 * 
	 * @param message
	 *            Mensagem da exceção.
	 */
	public BusinessException(String message) {
		super(message);
		this.messages = new ArrayList<String>();
		this.messages.add(message);
	}

	/**
	 * @param message
	 *            Mensagem de erro da exceção levantada.
	 * @param cause
	 *            origem do erro da exceção.
	 * 
	 */
	public BusinessException(String message, Throwable cause) {
		super(message, cause);
		this.messages = new ArrayList<String>();
		this.messages.add(message);
	}

	/**
	 * @param messages
	 *            A lista de mensagens da exceção.
	 */
	public BusinessException(List<String> messages) {
		super();
		this.messages = messages;
	}

	/**
	 * @return O messages a ser recuperado.
	 */
	public List<String> getMessages() {
		return messages;
	}

	/**
	 * @param messages
	 *            O messages a ser atribuido.
	 */
	public void setMessages(List<String> messages) {
		this.messages = messages;
	}

	/**
	 * Adicionar mensagem de exceção.
	 * 
	 * @param message
	 *            A mensagem a ser adicionada.
	 */
	public void addMessage(String message) {
		this.messages.add(message);
	}
}
